package pe.com.pev.gestiondocente.bo.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import javax.annotation.Resource;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import pe.com.pev.core.bo.GenericBOImpl;
import pe.com.pev.core.bo.Grid;
import pe.com.pev.core.exceptions.BOException;
import pe.com.pev.core.exceptions.DAOException;
import pe.com.pev.gestiondocente.bo.ProfesorBO;
import pe.com.pev.gestiondocente.dao.ProfesorDAO;
import pe.com.pev.gestiondocente.domain.Profesor;
import pe.com.pev.seguridad.domain.Perfil;
import pe.com.pev.util.Constantes;

/**
 * 
 * @author 
 *
 */
@Service("profesorBO")
public class ProfesorBOImpl extends GenericBOImpl<Profesor> implements ProfesorBO {

	private Logger logger = Logger.getLogger(this.getClass());
	
	@Resource
	private ProfesorDAO profesorDAO;
	
	private String nombres;
	
	public List<Profesor> findProfesor(Profesor profesor) throws Exception {
		
		List<Profesor> listaProfesor =profesorDAO.findProfesor(profesor);
		return listaProfesor;
	}

	//public boolean validate(Profesor profesor) throws BOException{
//		if(!profesor.getNombres().equals(nombres)){
	//		HashMap<String, String> parametros = new HashMap<String,String>();
		//	parametros.put("nombres", profesor.getNombres());
	//		List<Profesor> listaTemp = super.findByParams(Profesor.class, parametros);
	//		if(!listaTemp.isEmpty()){
	//			throw new BOException("El c\u00F3digo ya esta registrado");
	//		}
//		}
		/*if(profesor.getTipoModulo().getId().equals(Constantes.VAL_TIPO_OPCION) ||
		   profesor.getTipoModulo().getId().equals(Constantes.VAL_TIPO_SUB_OPCION)){
			if(profesor.getSuperior() == null){
				throw new BOException("Seleccione un padre");
			}
		}*/
	//	return true;
//	}
	
	@Transactional(propagation=Propagation.REQUIRED)
	public void save(Profesor profesor, 
					 String nombres) throws BOException, DAOException {
		this.nombres = nombres;
		super.save(profesor);
	}

	/*public List<P> findPadres() throws BOException, DAOException {
		List<Modulo> listaPadres = super.executeListNamedQuery("listaPadres", new ArrayList<String>());
		return listaPadres;
	}*/

	public Profesor findById(Long id) throws BOException, DAOException {
		Profesor profesor = super.findById(Profesor.class, id);
		return profesor;
	}

	@Override
	public Grid<Profesor> findToGrid(Profesor profesor,String order, int page, int rows)
	throws Exception {
		String where="where ";	
		
		List<Profesor> listaProfesor= findProfesor(profesor);
		
		return super.findToGridList(listaProfesor,where, " order by "+order,page,rows);
		
	}

}
